/*
 * SequentialCore.h
 *
 *  Created on: Oct 18, 2012
 *      Author: David Kadlecek, Ales Fiser
 */

#ifndef SEQUENTIALCORE_H_
#define SEQUENTIALCORE_H_

#include "general.h"
#include "InputMatrixHolder.h"
#include "Task.h"

class SequentialCore {
private:
	int maxdepth, *maxresult;
	InputMatrixHolder* inputMatrix;

	short isConnected(int node1, int node2);
	void checkAndSaveMaximum(Task* task);
	short isNotReasonToContinue();
	void logPrintNodesNotConnected(int node1, int node2);

public:
	SequentialCore();
	void loadInputMatrix(InputMatrixHolder* inputMatrix);
	virtual ~SequentialCore();
	int* findClique(Task* task);
	short isPossibleClique(int* candidate, int sizeOfCandidate);
};

#endif /* SEQUENTIALCORE_H_ */
